package baiqitun.stupro.security.service;

import baiqitun.stupro.common.service.MyService;
import baiqitun.stupro.security.entity.SysPermission;
import baiqitun.stupro.security.entity.SysRole;
import baiqitun.stupro.security.entity.SysRolePermission;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 角色许可表 服务类
 * </p>
 *
 * @author kedaji
 * @since 2020-03-25
 */
public interface SysRolePermissionService extends MyService<SysRolePermission> {
    /**
     * 建立角色与许可之间的联系
     * @param roleId 角色Id
     * @param permissionId 许可Id
     * @param createBy 创建人用户名
     */
    void relevance(String roleId, String permissionId, String createBy);

    /**
     * 获取指定角色的可用顶级菜单
     * @param roleCode 角色代码
     * @param group 顶级菜单所在分组
     * @return 菜单树
     */
    List<SysPermission> listEnabledRootPermissionByGroup(String roleCode, String group);

    /**
     * 获取角色可用许可
     * @param roleCode 角色代码
     * @return 许可列表
     */
    List<SysPermission> listEnabledPermissionByRoleCode(String roleCode);

    /**
     * 获取角色可用许可
     * @param roleId 角色id
     * @return 许可列表
     */
    List<SysPermission> listEnabledPermissionByRoleId(String roleId);

    /**
     * 查询角色是否有指定许可
     * @param roleCode 角色代码
     * @param permissionId 许可id
     * @return 有/没有
     */
    boolean hasRelationForRoleCode(String roleCode, String permissionId);

    /**
     *
     * @param roleId 角色id
     * @param permissionId 许可id
     * @return 是否有关系
     */
    boolean hasRelation(String roleId, String permissionId);
}
